unit declaraciones;
interface

const
{Constantes}

{Textos generales}
TXT_VOLVER_PPAL = 'Ingrese 0 para volver al menu principal';
TXT_VOLVER_ANT = 'Ingrese 0 para volver al menu anterior';
TXT_CUALQUIER_TECLA = 'Presione cualquier tecla para continuar';
TXT_SINO='(S)i,(N)o';
OPCION_SI='S';
OPCION_NO='N';
OPCION_SALIR='0';
OPCION_1='1';
OPCION_2='2';
OPCION_3='3';
OPCION_4='4';

{Textos del menu principal}
TXT_TIT_MENU_PPAL = 'SISTEMA DE GESTION DE REPUESTOS Y REPARACIONES';
TXT_MENU_0=OPCION_SALIR + ' - Salir';
TXT_MENU_1=OPCION_1 + ' -  Agregar un nuevo pedido de reparacion';
TXT_MENU_2=OPCION_2 + ' -  Registrar la reparacion de un electrodomestico';
TXT_MENU_3=OPCION_3 + ' -  Ver faltante de repuestos';
TXT_MENU_4=OPCION_4 + ' -  Carga de repuestos';
{Textos reparaciones}
TXT_TIT_REPARACIONES = OPCION_1 + ') Menu de reparaciones';
TXT_A_REPARACIONES = OPCION_1 + '. Registrar nuevo pedido de reparacion';
TXT_A_REPARACIONES_INGRESO = 'Ingrese el electrodomestico a reparar'; 
TXT_INFO_REPARACIONES_1 = 'Se ingreso el electrodomestico: ';
TXT_INFO_REPARACIONES_2 = ' con numero de orden: ';
TXT_INFO_REPARACIONES_3 = ' y fecha: ';
TXT_INFO_REPARACIONES_NO_ESPACIO = 'No hay espacio para registrar una nueva reparacion';

TXT_TIT_REGISTRAR_REPARACIONES = OPCION_2 + ') Menu de de registro reparaciones';
TXT_A_REGISTRAR_REPARACIONES = OPCION_1 + '. Obtener un pedido de reparacion';
TXT_A_REGISTRAR_REPARACIONES_INGRESO = 'Se obtendra un registro para reparar. Desea continuar?'; 
TXT_A_REGISTRAR_REPARACIONES_CONFIRMA = 'Confirma que desea registrar la reparacion?'; 
TXT_A_REGISTRAR_REPARACIONES_SIN_PEDIDOS = 'No hay pedidos que reparar';
TXT_A_REGISTRAR_REPARACIONES_SIN_STOCK = 'No hay stock suficiente para la reparacion';
TXT_A_REGISTRAR_REPARACIONES_REGISTRADA = 'Se ha registrado satisfactoriamente la reparacion';

TXT_REGISTRAR_REPUESTO_CODIGO = 'Ingrese un codigo de repuesto: ';
TXT_REGISTRAR_REPUESTO_CANTIDAD = 'Ingrese la cantidad: ';
TXT_REGISTRAR_REPUESTO_INGRESAR = OPCION_1 + '. Ingresar un repuesto';
TXT_REGISTRAR_REPUESTO_TOPE = 'Ya se han ingresado 10 repuestos';

TXT_REPARACION_TITULO='Detalles de la reparacion';
TXT_REPARACION_NUMERO='Numero de pedido: ';
TXT_REPARACION_FECHA_PEDIDO='Fecha del pedido: ';
TXT_REPARACION_FECHA_REPARACION='Fecha de la reparacion: ';
TXT_REPARACION_ELECTRO='Electrodomestico: ';
TXT_REPARACION_REPUESTOS='Repuestos: ';

{Textos repuestos}
TXT_TIT_CARGA_REPUESTOS = OPCION_4 + ') Menu de carga de repuestos (Cargar ordenados por codigo)';
TXT_A_CARGA_REPUESTOS = OPCION_1 + '. Cargar un registro de repuesto';
TXT_B_CARGA_REPUESTOS = OPCION_2 + '. Listar los repuestos';
TXT_CARGA_REPUESTO_1='Ingrese el codigo de repuesto:';
TXT_CARGA_REPUESTO_2='Ingrese la cantidad:';
TXT_CARGA_REPUESTO_3='Ingrese la descripcion del repuesto:';
TXT_CONFIRMA_CARGA_REPUESTO='Desea cargar el repuesto:';
TXT_REPUESTOS_STOCK='Stock: ';
TXT_REPUESTOS_DESCRIPCION='Descripcion: ';
TXT_REPUESTOS_CODIGO='Codigo: ';
TXT_REPUESTOS_CANTIDAD='Cantidad: ';
{Faltantes}
TXT_TIT_FALTANTE_REPUESTOS='Menu Ver faltantes de repuestos';
TXT_A_FALTANTE_REPUESTOS=OPCION_1 + '. Repuestos faltantes';
TXT_B_FALTANTE_REPUESTOS=OPCION_2 + '. Pedidos no reparados';
ENCABEZADO_REPUESTOS_FALTANTES='Codigo  Cantidad          Descripcion';

{Cantidad maxima de pedidos}
MAX_PEDIDOS=200;
{Cantidad maxima de repuestos}
MAX_REPUESTOS=10;
{Cantidad maxima de lineas a imprimir por pantalla en el reporte}
LINEAS_POR_PAGINA=15;
{Rutas a los archivos}
RUTA_ARCH_PEDIDOS='Pedidos.dat';
RUTA_ARCH_REPARADOS='Reparados.dat';
RUTA_ARCH_REPUESTOS='Repuestos.dat';

type
{Tipos}
str30=string[30];
{Tipo para el vector de repuestos del registro de reparacion}
TRepuestoV=Record
	codigo:word;
	cantidad:word;
	faltantes:word;
end;
{Vector de repuestos del registro de reparacion}
TVecRepuestos=Array[1..MAX_REPUESTOS] of TRepuestoV;
{Tipo para guardar el orden y la cantidad de repuestos a descontar del archivo de repuestos}
TRepuestoDesc=Record
	orden:word;
	cantidad:word;
	faltante:boolean;
end;
{Vector de repuestos a descontar del archivo de repuestos}
TVecRepuestosDesc=Array[1..MAX_REPUESTOS] of TRepuestoDesc;
{Registro de pedido para el archivo de pedidos}
TPedido=Record
	numero:word;
	fecha:longint;
	eletrodomestico:str30;
	sinRepuestos:boolean;
end;
{Registro de reparacion para el archivo de reparacion}
TReparacion=Record
	numero:word;
	fecha:longint;
	repuestos:TVecRepuestos;
	reparado:boolean;
end;
{Registro de repuesto para el archivo de repuestos}
TRepuesto=Record
	codigo:word;
	descripcion:str30;
	stock:word;
	faltante:boolean;
end;

tPunFaltantes=^TRfaltantes;
tPunNoReparados=^TarrNoReparados;
tPunRepFaltantes=^TarrRepFaltantes;
tPunNoReparado=^TNoReparado;
{Tipo para la estructura dinamica de faltantes de repuestos}
TRfaltantes = record
	codRepu:word;
	cantidad:word;
	arrNoReparados:tPunNoReparados;
	sig:tPunFaltantes;
end;

{Tipo para la estructura dinamica de pedidos no reparados por falta de un repuesto}
TarrNoReparados = record
	codPedido:word;
	sig:tPunNoReparados;
end;

{Tipo para la estructura dinamica de los pedidos no reparados}
TNoReparado = record
	codPedido:word;
	arrRepFaltantes:tPunRepFaltantes;
	sig:tPunNoReparado;
end;

{Tipo para la estructura dinamica de los repuestos faltantes para repara un pedido}
TarrRepFaltantes = record
	codRepuesto:word;
	cant:word;
	sig:tPunRepFaltantes;
end; 	 	

{Tipo de archivo de pedidos}
TArchPedidos = file of TPedido;
{Tipo de archivo de reparacion}
TArchReparacion = file of TReparacion;
{Tipo de archivo de repuestos}
TArchRepuestos = file of TRepuesto;
{No considerar el texto que sigue}
function WToStr(W:word):string;
function LToStr(L:longint):string;
implementation
function WToStr(W:word):string;
var S:string;
begin
 Str(W,S);
 WToStr:=S;
end;
function LToStr(L:longint):string;
var S:string;
begin
 Str(L,S);
 LToStr:=S;
end;
end.
